首页
下载应用
提交文章
关于我们
🔥 热搜 🔥
1
上海
2
习近平
3
新疆
4
鄂州父女瓜
5
乌鲁木齐
6
疫情
7
H工口小学生赛高
8
习明泽
9
芊川一笑图包
10
印尼排华
分类
社会
娱乐
国际
人权
科技
经济
其它
首页
下载应用
提交文章
关于我们
🔥
热搜
🔥
1
百度
2
今日热点
3
微信公众平台
4
贴吧
5
opgg
6
dnf私服
7
百度贴吧
8
知乎
9
dnf公益服
10
百度傻逼
分类
社会
娱乐
国际
人权
科技
经济
其它
这样的洞庭湖决堤,实在让人同情不起来
李尚福、魏凤和双双被拿下,与美国一份报告是否有关?
抗洪靠嘴,堵漏靠沙?印度官员真是绝了!
有的人走了,却永远活着
圈内疯传某谣言
生成图片,分享到微信朋友圈
2023年1月30日
2023年2月21日
2023年2月22日
2023年2月22日
2023年2月23日
2023年2月23日
2023年2月24日
2023年2月24日
2023年2月25日
2023年2月25日
2023年2月26日
2023年2月26日
2023年2月27日
2023年2月27日
2023年2月28日
查看原文
其他
比特币史话·64 | 赌徒的破产(5): 泊松分布
Original
刘教链
刘教链
2023-01-30
收录于合集 #史话
102个
(西莫恩·德尼·泊松,法国数学家。图片来源于网络)
前情回顾:
比特币史话·61 | 赌徒的破产(2): 薛定谔的猫
比特币史话·62 | 赌徒的破产(3): 双花欺诈
比特币史话·63 | 赌徒的破产(4): 算力对决
正文:
现在让我们把视角从挑战者一方切换到擂主一方。中本聪很清楚,挑战者之所以迟迟没有发起进攻,是因为他的算力不如当前全网诚实算力,
出手并无必胜把握
,必须等待时机。反之,当攻击者掌握的算力大于诚实挖矿算力,也就是攻击者算力大于总算力的50%,比如51%的算力,那么他出手必胜。这就是所谓的“
51%算力攻击
”。但事实上,“51%算力攻击”其实是“双花攻击”或者“共识攻击”的同义词。
要成功实施该攻击,并不必须掌握高达51%的算力
,而是可以在掌握比这小的多的算力的情况下,通过
赌概率
来成功实施该攻击。
中本聪接下来要推算的,就是如何让这位赌概率的攻击者成为一名失败的、破产的赌徒的策略。
这个策略包含两点
:
第一,接收方
每次收款都要生成一个新的比特币地址
给到发送方(潜在的攻击方),这样一来,接收方就
把开始比赛的发令枪拿到了自己手里
。正如中本聪在比特币白皮书中所写的,“接收者生成一个新的密钥对,并在签署交易前不久(才)将公钥(注:应更新为“地址”)提供给发送者。这可以防止发送者提前准备一条区块链,通过不断地进行运算直到幸运地取得足够的进展,然后再执行交易。一旦发出了交易,不诚实的发送者就开始在包含其交易替代版本的平行链上秘密工作。”
站到诚实的最长链一边看,敌在暗处而我在明处,如果不能掌握开始比赛的发令枪,那么攻击者就会通过“抢跑”而获得不公平的先发优势。之前我们已经了解到,比特币地址一旦付款,其公钥就将暴露在区块链上,所以一个比特币地址用于付款最好只用一次,不重复使用。现在我们又了解到了,为了避免遭受双花欺诈,一个比特币地址用于收款最好也只用一次,不要重复使用。
综合起来,一个地址无论收款还是付款,只用一次,绝不重复使用,这是最安全的使用方式。
比如对于一个电商应用,最好为每一个订单生成一个新的比特币收款地址。为了减轻管理大量地址和私钥的负担,可以考虑采用
分层确定性钱包
(HD钱包)技术。
第二,接收方
等待一定的区块数量,也就是区块时间,来确认到账
。“现在我们考虑新交易的接收者需要等待多久才能确定发送者无法更改交易”[比特币白皮书,2008]。这是一场对赌,但是
主动权完全掌握在接收方手中
,因为等待多少个区块时间才进行到账确认这件事儿,完全是由接收方定的。这是一场耐力的比拼。在敌暗我明的情况下,接收方胜算几何呢?中本聪引入了大名鼎鼎的“
泊松分布
”(Poisson distribution)。
中本聪指出,在接收方看到交易被写入到一个区块中并在后面又增加了
若干“加固”区块
之后,“他并不知道攻击者取得的确切进度,但是假设每个诚实区块花费时间符合平均期望,那么攻击者的潜在进度将是一个泊松分布”,而这个泊松分布将具有一个
数学期望
,期望值为“加固”区块的数量乘以算力之比。
(泊松分布。图片来源于网络)
1837年,法国数学家、几何学家和物理学家
西莫恩·德尼·泊松
(Simeon-Denis Poisson, 1781-1840)发表了论文《
关于判断的概率之研究
》,提出了一种随机现象的分布,这就是日后在统计学和概率论中占据一席之地的“
泊松分布
”。泊松分布是一种
离散概率分布
,描述了单位时间或空间内发生给定数量的随机事件的概率,如果这些随机事件以已知的
常数平均速率
发生,且
独立
于距上一次事件发生的时间。[wikipedia]
哈希计算速率有一个很良好的特性就是正比于算力,如此,找到工作量证明的速率也就是区块生成的速率也就稳定地正比于算力。而且,每次哈希计算彼此都是独立的,且与历史数据无关。恰好满足泊松分布的成立条件!
如果更换了共识算法
,不再使用基于工作量证明的哈希计算来标定区块生成速率,那么
就改变了区块链延长的概率特征
,很可能就不再满足泊松分布的成立条件,也就不适用于中本聪接下来计算的“几个区块确认”的全部概率推算方法了。对于这些非PoW共识算法的区块链而言,不分青红皂白地套用“XX个区块确认”,实在是一种非常盲目和滑稽的表现。
泊松分布就像一个夜视镜,让潜伏在伸手不见五指的暗夜之中的攻击者无所遁形。攻击者可能取得的每一种可能的进度(区块数)的概率,正是
泊松密度函数
(Poisson density)。那么,把每一种可能的进度下挑战成功的概率(
赌徒破产问题
)乘以取得该进度的概率(
泊松密度函数
),然后将所有可能性遍历求和,就得到了攻击者通过
赌概率
的方法最终成功完成攻击的可能性。具体的数学公式中本聪已经写在了比特币的白皮书中,诸君若有兴趣可自行查阅。
中本聪给出了几组试算结果。显而易见的是,随着
攻击方算力占比
的变化,所需等待的区块确认数也会
变化
,并非一个定数。并且这个数字和我们心里所接受的
“安全”概率
也有关系。假设我们能够接受把双花攻击成功可能性
不超过千分之一
定义为“安全”
,那么就有下面的几组数据:
攻击方算力占比:10% => 安全的区块确认数:6
攻击方算力占比:15% => 安全的区块确认数:9
攻击方算力占比:20% => 安全的区块确认数:12
攻击方算力占比:25% => 安全的区块确认数:16
攻击方算力占比:30% => 安全的区块确认数:25
攻击方算力占比:35% => 安全的区块确认数:42
攻击方算力占比:40% => 安全的区块确认数:90
攻击方算力占比:45% => 安全的区块确认数:341
业内流传的所谓“6个区块确认”,仅仅是源于中本聪列举的一系列计算结果的起点是10%和6这一
巧合
。显然,当年中本聪所设的攻击算力占比10%,是一个相对宽裕的红线。今天的比特币全网算力已经足够高,高到大多数人根本没有资本和实力来与之抗衡,因此,安全的区块链确认数就可以适当下调,就像coinbase公司调整为3个区块确认那样。
【未完待续】(公众号:刘教链)
您可能也对以下帖子感兴趣
{{{title}}}
文章有问题?点此查看未经处理的缓存